Skip to content

Improves CI performance - #22995

Draft
NickSdot wants to merge 7 commits into
php:masterfrom
NickSdot:perf/ci-build-times
Draft

Improves CI performance#22995
NickSdot wants to merge 7 commits into
php:masterfrom
NickSdot:perf/ci-build-times

Conversation

@NickSdot

@NickSdot NickSdot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

WIP

tl/dr: ~45m -> ~21m; this is CI-only stuff -- everything in #22917 reduces further.

Results

f47a44e

Faster Windows CI through parallel builds/tests and overlapping database setup

Windows x64 Before After Improvement
Setup + build 10:53 3:22 69%
Tests 30:37 14:48 52%
Full job 41:55 18:48 55%

Cache hit rate: ~95%.

8e526f1

Benchmark checkout avoids downloading unnecessary historical file contents

Step Before After Improvement
Benchmark checkout ~1:11 0:20 72%

d2b0d08

Keeps non-Windows compiler caches fresh

Before: the older the weekly cache, the lower the hit rate. 2026-07-27 was ~99% (0:30s) while 2026-08-02 was only ~25% (6:52). Rolling cache solves that. 1

Compile job Before 2 After Improvement
Linux release 7:54 0:28 94%
Benchmark 2:33 0:17 89%
Unit tests 2:06 0:14 89%
Linux ASAN 1:50 0:27 75%
macOS 4:07 1:30 64%
Alpine ASAN 2:37 0:57 64%
Linux x32 2:10 0:57 56%

Cache hit rate: ~99%.

9de2a2e

Skip unused setup in the ordinary Linux ASAN job

Setup Before After Improvement
Service containers 1:24 0:13 85%
MSSQL setup 0:14 Skipped 100%
Apt dependencies 0:54 0:42 22%
Total targeted setup 2:32 0:55 64%

Saves 1:37 per ASAN run. Depending on download speeds shaves off 1–3 min.

7507629

Run Function JIT tests concurrently

This will currently not reduce total CI time, because they are not the longest running job. However, runnign them in parallel gives earlier feedback. This will help when all the other non-CI PRs landed.

Footnotes

  1. each new master commit rolls the cache forward.

  2. when cache not fresh.

@NickSdot
NickSdot force-pushed the perf/ci-build-times branch 2 times, most recently from c4f48b7 to 6ce446c Compare August 2, 2026 09:16
@NickSdot
NickSdot force-pushed the perf/ci-build-times branch 2 times, most recently from 87c7e25 to 541ac21 Compare August 2, 2026 10:01
@NickSdot
NickSdot force-pushed the perf/ci-build-times branch 10 times, most recently from 4010558 to b9e37cf Compare August 2, 2026 17:09
@NickSdot
NickSdot force-pushed the perf/ci-build-times branch 3 times, most recently from 5f23b04 to 70b3bec Compare August 2, 2026 19:41
Comment thread .github/matrix.php Outdated
@NickSdot
NickSdot force-pushed the perf/ci-build-times branch from 70b3bec to 9de2a2e Compare August 2, 2026 21:18
@NickSdot NickSdot changed the title Improves CI build performance Improves CI performance Aug 3, 2026
@NickSdot
NickSdot force-pushed the perf/ci-build-times branch from 09834c1 to b94064e Compare August 3, 2026 09:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants